package com.dxf.bigdata.D05_spark_again.action

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

import java.io.Serializable

/**
 * 闭包(函数)检测,
 * 闭包清楚
 *
 *
 */
object foreach2_闭包 {

  def main(args: Array[String]): Unit = {

    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("app")
    sparkConf.set("spark.port.maxRetries", "100")
    val sc = new SparkContext(sparkConf)

    val rdd: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4), 2)
    val user = new User()

    // User 需要序列化传送到各个Executor中
    // 闭包操作 (闭包就是函数 )
    // 闭包检测, 即User对象包含在闭包中,检测是否可序列化
    //     val cleanF = sc.clean(f)
    rdd.foreach(x => println("age=" + (x + user.age)))

    sc.stop()

  }

  //  class User extends Serializable{
  //    val age: Int = 30
  //  }

  case class User() {
    val age: Int = 30
  }

}
